//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES OR INDEMNITIES.
//
//////////////////////////////////////////
// ToolBoxDebug - Debugging assistance  //
//////////////////////////////////////////


#ifndef TOOL_BOX_DEBUG_SETTINGS_HEADER
#define TOOL_BOX_DEBUG_SETTINGS_HEADER

// All available TBD_CLASS_TYPEs
enum TBD_CLASS_TYPE { TBDCT_NULL = 0, TBDCT_ALL, TBDCT_ALL_FUNCTIONS, TBDCT_ALL_MEMORY, TBDCT_INFO, TBDCT_READ, TBDCT_LAST };

#ifdef TBD_DEBUG

// Optional output-prefix
#define TBD_OUTPUT_TITLE TEXT("RILDrv")

// Optional output file name
#ifdef UNDER_CE
#define TBD_OUTPUT_FILE_NAME TEXT("\\rildrv.txt")
#else // UNDER_CE
#define TBD_OUTPUT_FILE_NAME TEXT("C:\\ril.txt")
#endif // UNDER_CE

// Optionally use MessageBeep and MessageBox when asserts fire
// #define ASSERT_USES_MESSAGExxx 1

// User-configurable settings (of type bool)
// Send output to a file
#ifdef UNDER_CE
#define TBD_OUTPUT_TO_FILE false
#else  // UNDER_CE
#define TBD_OUTPUT_TO_FILE true
#endif // UNDER_CE
// Send output to the debugger
#define TBD_OUTPUT_TO_DEBUG true
// Display the current date and time in the output header
#define TBD_OUTPUT_DATE_TIME_IN_HEADER false
// Display thread IDs in output
#define TBD_OUTPUT_THREAD_ID false
// Display system tick-count in output
#define TBD_OUTPUT_TICK_COUNT false
// Use message boxes when TBD_ASSERT fires
#define TBD_USE_ASSERT_UI true
// Call DebugBreak() when an TBD_ASSERT fires (ignored if (TBD_USE_ASSERT_UI == true))
#define TBD_ASSERTS_BREAK_INTO_DEBUGGER true

// REQUIRED strings for TBD_CLASS_TYPEs
extern const TCHAR* psClassTypeNames[];

// REQUIRED TBD_CLASS_TYPEs
extern const TBD_CLASS_TYPE TBDC_NULL[];
extern const TBD_CLASS_TYPE TBDC_ALL[];
extern const TBD_CLASS_TYPE TBDC_ALL_FUNCTIONS[];
extern const TBD_CLASS_TYPE TBDC_ALL_MEMORY[];

// Custom TBD_CLASS_TYPEs
extern const TBD_CLASS_TYPE TBDC_INFO[];
extern const TBD_CLASS_TYPE TBDC_READ[];

// TBD_CLASS_TYPE hierarchy
extern const TBD_CLASS_TYPE* tbdcHierarchy[];

#endif // TBD_DEBUG

#endif // TOOL_BOX_DEBUG_SETTINGS_HEADER
